package com.example.LinkedListTraversal;

import java.util.LinkedList;
import java.util.ListIterator;
// 使用列表迭代器ListIterator
public class ListIteratorExample {
    public static void main(String[] args) {
        // 创建LinkedList
        LinkedList<String> cities = new LinkedList<>();
        cities.add("Beijing");   // 添加北京
        cities.add("Shanghai");  // 添加上海
        cities.add("Guangzhou"); // 添加广州
        cities.add("Shenzhen");  // 添加深圳

        System.out.println("=== 列表迭代器正向遍历 ===");

        // 获取列表迭代器（从开始位置）
        ListIterator<String> listIterator = cities.listIterator();

        // 正向遍历
        while (listIterator.hasNext()) {
            int index = listIterator.nextIndex();  // 获取下一个元素的索引
            String city = listIterator.next();     // 获取下一个元素
            System.out.println("索引 " + index + ": " + city);
        }

        System.out.println("=== 列表迭代器反向遍历 ===");

        // 反向遍历（此时迭代器在末尾）
        while (listIterator.hasPrevious()) {
            int index = listIterator.previousIndex();  // 获取前一个元素的索引
            String city = listIterator.previous();     // 获取前一个元素
            System.out.println("索引 " + index + ": " + city);
        }
    }
}

/*输出：
=== 列表迭代器正向遍历 ===
索引 0: Beijing
索引 1: Shanghai
索引 2: Guangzhou
索引 3: Shenzhen
=== 列表迭代器反向遍历 ===
索引 3: Shenzhen
索引 2: Guangzhou
索引 1: Shanghai
索引 0: Beijing
*/